Skip to main content

生成 去除 文件 版权信息的脚本

windows 上测试可以, python3版本

# 版权所有[成都尼毕鲁科技股份有限公司]
# 根据《保密信息使用许可证》获得许可;
# 除非符合许可,否则您不得使用此文件。
# 您可以在以下位置获取许可证副本,链接地址:
# https://wiki.tap4fun.com/pages/viewpage.action?pageId=29818250
# 除非适用法律要求或书面同意,否则保密信息按照使用许可证要求使用,不附带任何明示或暗示的保证或条件
# 有关管理权限的特定语言,请参阅许可证副本。
# coding=utf-8
import os
import re

golicense = "// 版权所有[成都尼毕鲁科技股份有限公司]\n" \
"// 根据《保密信息使用许可证》获得许可;\n" \
"// 除非符合许可,否则您不得使用此文件。\n" \
"// 您可以在以下位置获取许可证副本,链接地址:\n" \
"// https://wiki.tap4fun.com/pages/viewpage.action?pageId=29818250\n" \
"// 除非适用法律要求或书面同意,否则保密信息按照使用许可证要求使用,不附带任何明示或暗示的保证或条件。\n" \
"// 有关管理权限的特定语言,请参阅许可证副本。\n"

pylicense = "# 版权所有[成都尼毕鲁科技股份有限公司]\n" \
"# 根据《保密信息使用许可证》获得许可;\n" \
"# 除非符合许可,否则您不得使用此文件。\n" \
"# 您可以在以下位置获取许可证副本,链接地址:\n" \
"# https://wiki.tap4fun.com/pages/viewpage.action?pageId=29818250\n" \
"# 除非适用法律要求或书面同意,否则保密信息按照使用许可证要求使用,不附带任何明示或暗示的保证或条件\n" \
"# 有关管理权限的特定语言,请参阅许可证副本。\n"

# 跳过以下文件或目录
blacklist = ["deepcopy_generated.go", "vendor", ".git", "pb.go", "gen_license.py", "gen_msg.go.py"]
# 只处理以下类型的文件
whitelist = [".go", ".py"]

def get_lisence(suffix):
lisence = ""
if suffix == ".go":
lisence = golicense
if suffix == ".py":
lisence = pylicense
return lisence


def gen(filepath):
for allow in whitelist:
idx = len(filepath) - len(allow)
if idx <= 0 or filepath[idx:] != allow:
continue

# print( filepath)
# 清除版权声明
with open(filepath, "r+",encoding="utf-8") as f:
old = f.read()
f.seek(0)
lines = old.splitlines(keepends=True)
linecnt = 0
for idx, line in enumerate(lines):
# print( idx, line)
if "有关管理权限的特定语言,请参阅许可证副本" in line:
linecnt = idx + 1
break
lines = lines[linecnt:]
f.seek(0)
f.truncate()
for line in lines:
# print( linecnt, line)
f.write(line)

# # 生成版权声明
# with open(filepath, "r+",encoding="utf-8") as f:
# old = f.read()
# f.seek(0)
# l = re.search("^package\s([a-zA-Z0-9_]*)\s*$", old, flags=re.M)
# if l != None: # go files
# packagename = l.group(1)
# f.write("// Package " + packagename + " .\n")
# f.write(get_lisence(allow))
# f.write(old)
return


def dirlist(path):
filelist = os.listdir(path)
for filename in filelist:
skip = False
for ignore in blacklist:
idx = len(filename) - len(ignore)
if idx >= 0 and filename[idx:] == ignore:
skip = True
continue
if skip:
continue
filepath = os.path.join(path, filename)
if os.path.isdir(filepath):
dirlist(filepath)
else:
gen(filepath)


def start():
dirlist("./")

if __name__ == "__main__":
start()